Generation of random or pseudo-random numbers is a fundamental building stone in many applications. For example, pseudo random generation of a number may be required in context of Pseudo Random Test Generators (PRTGs) for hardware verification. Hardware verification may involve generating pseudo random op-code instructions, and may require pseudo random generation of numbers that satisfy one or more constraints, e.g., a range constraint and/or a mask constraint. The constraints may arise, for example, from the tested hardware architecture, as well as from a user specification. The pseudo randomly generated numbers may be required to be selected, e.g., with a uniform distribution, from a set of all valid numbers that satisfy the one or more constraints.
Some computing systems, for example, computing systems including post-silicon RTGs, may require generating pseudo random numbers while consuming relatively short computing time and/or small memory space.